home *** CD-ROM | disk | FTP | other *** search
- /* Copyright (c) 1987 Michael E. Connick */
-
- #include <String.h>
- #include <stdio.h>
-
- extern int oneSwitch, zone1, zone2, zone3, zone4, zone5, zone6, zone7;
- extern int zone8, zone9;
- extern char areaCode[], localNet[];
-
- CompileNodes()
- {
- char filename[256], record[513], testChar, net[6], node[6], zone[6];
- char nodeType, phoneNumber[50], workNumber[50], entryAC[5];
- char *ptr1, *ptr2, *ptr3, *ptr4, *scriptTable;
- char selector[50], change_to[50];
- int netNumber, nodeNumber, ourNet, i, zoneInt, skipSwitch, subscript;
- FILE *fp, *ufp;
-
- if((fp = fopen(":Tabby:Dialing Script", "r")) != NULL)
- {
- if((scriptTable = NewPtr(30000)) == NULL)
- {
- message("Unable to allocate memory for Dialing Script Table");
- return;
- }
- *scriptTable = '\0';
- while(fgets(record, 512, fp) != NULL)
- {
- if((ptr1 = strchr(record, '\t')) != NULL)
- *ptr1++ = '\0';
- if((ptr2 = strchr(ptr1, '\n')) != NULL)
- *ptr2 = '\0';
- strcat(scriptTable, record);
- strcat(scriptTable, "\t");
- strcat(scriptTable, ptr1);
- strcat(scriptTable, "\n");
- }
- }
- else
- {
- if((scriptTable = NewPtr(10)) == NULL)
- {
- message("Unable to allocate memory for Dialing Script Table");
- return;
- }
- *scriptTable = '\0';
- }
- skipSwitch = FALSE;
- ourNet = atoi(localNet);
- if(message("Warning - Tabby Nodes file must be in the 'Tabby' folder!") == FALSE)
- {
- fclose(fp);
- DisposPtr(scriptTable);
- return;
- }
- while(TRUE)
- {
- if(putfile("Tabby Nodes", filename) == FALSE)
- exit();
- if(strcmp("Tabby Nodes", filename) != 0)
- {
- message("Output file must be called Tabby Nodes.");
- continue;
- }
- break;
- }
- if((ufp = fopen(filename,"wb")) == NULL)
- {
- message("CompileNodes - Unable to create Tabby Nodes.");
- exit();
- }
- netNumber = 0;
- while(getfile("TEXT", filename) != FALSE)
- {
- if((fp = fopen(filename,"r")) == NULL)
- {
- message("CompileNodes - Unable to open nodelist.");
- exit();
- }
- while(fgets(record,512,fp) != NULL)
- {
- testChar = record[0];
- if(testChar == ';' || testChar == '\r' || testChar == '\n')
- continue;
- ptr1 = strchr(record,',');
- *ptr1 = '\0';
- if(strcmp(record,"Zone") == 0)
- {
- skipSwitch = FALSE;
- ptr3 = ptr1;
- ptr3++;
- ptr2 = strchr(ptr3,',');
- *ptr2 = '\0';
- strcpy(zone,ptr3);
- *ptr2 = ',';
- zoneInt = atoi(zone);
- if(zoneInt == 1 && zone1 != TRUE)
- skipSwitch = TRUE;
- else if(zoneInt == 2 && zone2 != TRUE)
- skipSwitch = TRUE;
- else if(zoneInt == 3 && zone3 != TRUE)
- skipSwitch = TRUE;
- else if(zoneInt == 4 && zone4 != TRUE)
- skipSwitch = TRUE;
- else if(zoneInt == 5 && zone5 != TRUE)
- skipSwitch = TRUE;
- else if(zoneInt == 6 && zone6 != TRUE)
- skipSwitch = TRUE;
- else if(zoneInt == 7 && zone7 != TRUE)
- skipSwitch = TRUE;
- else if(zoneInt == 8 && zone8 != TRUE)
- skipSwitch = TRUE;
- else if(zoneInt == 9 && zone9 != TRUE)
- skipSwitch = TRUE;
- if(skipSwitch == TRUE)
- continue;
- nodeType = 'r';
- }
- else if(skipSwitch == TRUE)
- continue;
- else if(strcmp(record,"Region") == 0)
- {
- nodeType = 'r';
- }
- else if(strcmp(record,"Host") == 0)
- {
- rotateCursor();
- nodeType = 'h';
- }
- else if(strcmp(record,"Hub") == 0)
- {
- nodeType = 'b';
- }
- else if(strcmp(record,"") == 0)
- {
- nodeType = ' ';
- }
- else
- continue;
- ptr1++;
- ptr2 = strchr(ptr1,',');
- *ptr2 = '\0';
- strcpy(net,ptr1);
- if(nodeType == 'h' || nodeType == 'r')
- netNumber = atoi(net);
- nodeNumber = atoi(net);
- if(nodeType == 'b' && netNumber != ourNet)
- continue;
- ptr1 = ptr2+1;
- ptr2 = strchr(ptr1,',');
- ptr1 = ptr2+1;
- ptr2 = strchr(ptr1,',');
- ptr1 = ptr2+1;
- ptr2 = strchr(ptr1,',');
- ptr1 = ptr2+1;
- ptr2 = strchr(ptr1,',');
- *ptr2 = '\0';
- strcpy(workNumber,ptr1);
- ptr1 = workNumber;
-
- phoneNumber[0] = '\0';
- if(workNumber[0] == '1' && workNumber[1] == '-')
- {
- if(oneSwitch == TRUE)
- {
- phoneNumber[0] = workNumber[0];
- phoneNumber[1] = '\0';
- }
- ptr1 += 2;
- for(i = 0; *ptr1 != '-'; i++, ptr1++)
- entryAC[i] = *ptr1;
- entryAC[i] = '\0';
- if(strcmp(entryAC, areaCode) == 0)
- phoneNumber[0] = '\0';
- else
- strcat(phoneNumber, entryAC);
- ptr1++;
- }
- for(ptr2 = phoneNumber; *ptr2 != '\0'; ptr2++)
- ;
- for(; *ptr1 != '\0'; ptr1++, ptr2++)
- if(*ptr1 != '-')
- *ptr2 = *ptr1;
- else
- ptr2--;
- *ptr2 = '\0';
-
- ptr3 = scriptTable;
- while(*ptr3 != '\0')
- {
- for(subscript = 0; *ptr3 != '\t'; subscript++)
- selector[subscript] = *ptr3++;
- selector[subscript] = '\0';
- ptr3++;
- for(subscript = 0; *ptr3 != '\n'; subscript++)
- change_to[subscript] = *ptr3++;
- change_to[subscript] = '\0';
- ptr3++;
- if((ptr4 = strstr(phoneNumber, selector)) != NULL)
- {
- if(ptr4 != phoneNumber)
- continue;
- strcpy(workNumber, change_to);
- ptr4 += strlen(selector);
- strcat(workNumber, ptr4);
- strcpy(phoneNumber, workNumber);
- }
- }
- fputc(nodeType, ufp);
- fputc((nodeNumber >> 8) & 0x00ff, ufp);
- fputc(nodeNumber & 0x00ff, ufp);
- for(ptr1 = phoneNumber; *ptr1 != '\0'; ptr1++)
- fputc(*ptr1,ufp);
- fputc('\r',ufp);
- }
- fclose(fp);
- InitCursor();
- }
- fclose(ufp);
- DisposPtr(scriptTable);
- message("Done compiling nodes!");
- }
-